﻿using System;
using System.Net.Http;

namespace Tavis.Interfaces {
    
    public enum StateChangeType {
         Transfer,  // Change current state of REST agent to new retreived state
         Replace,  // Update current state of REST agent with new state.  Use same handler
         Independent, // Create a new REST Agent to manage state independant of the current state
         Embed //  Embed new state into the current state. 
    }
    
    public interface ILink {
        Uri Context { get; set; }
        Uri Target { get; set; }

        // Hypermedia Factors http://www.amundsen.com/hypermedia/hfactor/
        string Relation { get; set; }   //CL
        string Accept { get; set; }   //CR
        HttpMethod Method { get; set; }  //CM
        HttpContent Content { get; set; }  //LN
        StateChangeType StateChange { get; }   //LE & LO

        void AddParameter(string name, object value);  //LT
    }
}
